﻿// 家谱树.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//


/*
* 
* http://ybt.ssoier.cn:8088/problem_show.php?pid=1351

有个人的家族很大，辈分关系很混乱，请你帮整理一下这种关系。

给出每个人的孩子的信息。

输出一个序列，使得每个人的后辈都比那个人后列出。

【输入】
第1行一个整数N（1≤N≤100），表示家族的人数；

接下来N行，第i行描述第i个人的儿子；

每行最后是0表示描述完毕。

【输出】
输出一个序列，使得每个人的后辈都比那个人后列出；

如果有多解输出任意一解。

【输入样例】
5
0
4 5 1 0
1 0
5 3 0
3 0
【输出样例】
2 4 5 3 1
*/

#include <iostream>
#include <vector>
#include <queue>


using namespace std;

const int N = 105;
vector<int> g[N];
int din[N], dout[N];
int n;

void topsort() {
	queue<int> q;
	for (int i = 1; i <= n; i++) {
		if (din[i] == 0) { q.push(i); }
	}
	vector<int> ans;
	while (q.size()) {
		int curr = q.front(); q.pop();
		ans.push_back(curr);

		for (int i = 0; i < g[curr].size(); i++) {
			int j = g[curr][i];
			din[j]--;
			if (0 == din[j]) {
				q.push(j);
			}
		}
	}

	for (int i = 0; i < ans.size(); i++) {
		cout << ans[i] << " ";
	}

	return ;
}


int main()
{
	cin >> n;
	for (int i = 1; i <= n; i++) {
		int t;
		while (cin >> t) {
			if (t == 0) break;
			g[i].push_back(t);
			dout[i]++; din[t]++;
		}
	}

	topsort();
 
}
 